package anr.desu.pmo.proyecto.model.dao.jpa;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;
import anr.desu.pmo.proyecto.model.Empleado;
import anr.desu.pmo.proyecto.model.dao.EmpleadoDAO;

public class JPAEmpleadoDAO implements EmpleadoDAO{

	private EntityManager em;
	
	public JPAEmpleadoDAO(EntityManager em){
		this.em=em;
	}
	
	@Override
	public List<Empleado> findAll() {
		Query query=null;
		try{
			query=em.createQuery("Select o From Empleado o Order by o.nombre, o.apepaterno");
		}catch(Exception e){
			System.out.println("mensaje: "+e.getMessage());
		}
		return query.getResultList();
	}

	@Override
	public Empleado findByIdUsuario(Integer id) {
		Query query=em.createQuery("Select o From Empleado o Where o.usuario.idusuario=?1");
		query.setParameter(1, id);
		return (Empleado)query.getSingleResult();
	}

	@Override
	public Empleado findById(Integer id) {
		Query query=em.createQuery("Select o From Empleado o Where o.idempleado=?1");
		query.setParameter(1, id);
		return (Empleado)query.getSingleResult();
	}
	
	@Override
	public Empleado insert(Empleado o) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void update(Empleado o) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void delete(Empleado o) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public List<Empleado> findByJefe(Integer id) {
		Query query=null;
		try{
			query=em.createQuery("Select o From Empleado o Where (o.jefe.idempleado=?1 " +
					"or o.idempleado =?1) Order by o.nombre, o.apepaterno");
			query.setParameter(1, id);
		}catch(Exception e){
			System.out.println("mensaje: "+e.getMessage());
		}
		return query.getResultList();
	}

}
